/**
 * 初始化 Tree Table 的封装
 * 
 * @author cyf
 */
(function() {
	var TreeTable = function(tableId, url, columns) {
		this.btInstance = null; // jquery和bootstrapTreeTable绑定的对象
		this.bstableId = tableId;
		this.url = url;
		this.method = "GET";
		this.columns = columns;
		this.data = {};// ajax的参数
		this.expandColumn = null;// 展开显示的列
		this.id = 'menu_id';// 选取记录返回的值
		this.code = 'menu_id';// 用于设置父子关系
		this.parentCode = 'parent_id';// 用于设置父子关系
		this.expandAll = false;// 是否默认全部展开
		this.toolbarId = tableId + "Toolbar";
		this.height = 430;
	};

	TreeTable.prototype = {
		/**
		 * 初始化bootstrap table
		 */
		init : function() {
			var tableId = this.bstableId;
			this.btInstance = $('#' + tableId).bootstrapTreeTable({
				id : this.id,// 选取记录返回的值
				code : this.code,// 用于设置父子关系
				parentCode : this.parentCode,// 用于设置父子关系
				rootCodeValue : this.rootCodeValue,// 设置根节点code值----可指定根节点，默认为null,"",0,"0"
				type : this.method, // 请求数据的ajax类型
				url : this.url, // 请求数据的ajax的url
				ajaxParams : this.data, // 请求数据的ajax的data属性
				expandColumn : this.expandColumn,// 在哪一列上面显示展开按钮,从0开始
				striped : true, // 是否各行渐变色
				expandAll : this.expandAll, // 是否全部展开
				columns : this.columns, // 列数组
				toolbar : "#" + this.toolbarId,// 顶部工具条
				height : this.height-25,
			});
			return this;
		},

		/**
		 * 设置在哪一列上面显示展开按钮,从0开始
		 */
		setExpandColumn : function(expandColumn) {
			this.expandColumn = expandColumn;
		},
		/**
		 * 设置记录返回的id值
		 */
		setIdField : function(id) {
			this.id = id;
		},
		/**
		 * 设置记录分级的字段
		 */
		setCodeField : function(code) {
			this.code = code;
		},
		/**
		 * 设置记录分级的父级字段
		 */
		setParentCodeField : function(parentCode) {
			this.parentCode = parentCode;
		},
		/**
		 * 设置根节点code值----可指定根节点，默认为null,"",0,"0"
		 */
		setRootCodeValue : function(rootCodeValue) {
			this.rootCodeValue = rootCodeValue;
		},
		/**
		 * 设置是否默认全部展开
		 */
		setExpandAll : function(expandAll) {
			this.expandAll = expandAll;
		},
		/**
		 * 设置表格高度
		 */
		setHeight : function(height) {
			this.height = height;
		},
		/**
		 * 设置ajax post请求时候附带的参数
		 */
		set : function(key, value) {
			if (typeof key == "object") {
				for ( var i in key) {
					if (typeof i == "function")
						continue;
					this.data[i] = key[i];
				}
			} else {
				this.data[key] = (typeof value == "undefined") ? $("#" + key)
						.val() : value;
			}
			return this;
		},

		/**
		 * 设置ajax get请求时候附带的参数
		 */
		setData : function(data) {
			this.data = data;
			return this;
		},

		/**
		 * 清空ajax post请求参数
		 */
		clear : function() {
			this.data = {};
			return this;
		},

		/**
		 * 刷新表格
		 */
		refresh : function(parms) {
			if (typeof parms != "undefined") {
				this.btInstance.bootstrapTreeTable('refresh', parms.query);// 为了兼容bootstrap-table的写法
			} else {
				this.btInstance.bootstrapTreeTable('refresh');
			}
		},

		/**
		 * 设置高度
		 */
		resetHeight : function(parms) {
			if (typeof parms != "undefined") {
				this.btInstance.bootstrapTreeTable('resetHeight', parms.height);// 为了兼容bootstrap-table的写法
			} else {
				this.btInstance.bootstrapTreeTable('resetHeight');
			}
		},

		/**
		 * 获取选中行
		 */
		getSelectedRow : function() {
			return this.btInstance.bootstrapTreeTable('getSelections');
		}
	};

	window.TreeTable = TreeTable;

}());